Skip to content

build(deps): Ray 2.56.0 image base locks (base-only)#833

Merged
Aydin-ab merged 7 commits into
mainfrom
deps/ray-2.56.0-recompile
Jul 2, 2026
Merged

build(deps): Ray 2.56.0 image base locks (base-only)#833
Aydin-ab merged 7 commits into
mainfrom
deps/ray-2.56.0-recompile

Conversation

@Aydin-ab

@Aydin-ab Aydin-ab commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

The base half of the Ray 2.56.0 depset bump: the ray2560 bundle + the two generated image base locks. Per-template expand entries stay on 2551 — each template's own bump PR repoints its entry (base-first rollout).

What

  • Add ray2560_py311_cu128 / ray2560_py312_cu128 bundles, attached to the base ray_depset compile entry alongside ray2551 (dual-version → 2.55.1 base locks kept for rollback).
  • Commit the generated ray_2.56.0_img_py311/py312.lock (compiled from Ray 2.56.0's published ray_img locks via update_deps.sh).
  • Fix the soruce_depsetsource_depset typo (langchain entry).

LLM base deferred (upstream not ready)

ray_llm stays ray2551-only: Ray's 2.56.0 LLM deplock isn't published yet (deplocks/llm/… 404s). rayllm_2.56.0 + the LLM templates (langchain, audio, multi_agent, llm_batch_inference_vision, …) are a follow-up once Ray ships it.

Notes

@Aydin-ab Aydin-ab force-pushed the deps/ray-2.56.0-recompile branch from bdb7bbf to 1c2c64d Compare July 1, 2026 23:04
@Aydin-ab Aydin-ab changed the title build(deps): repoint template depsets to Ray 2.56.0 (config only) build(deps): add Ray 2.56.0 base depset locks (base-only) Jul 1, 2026
Add the ray2560 py311/py312 bundles and attach them to the base ray_depset
compile entry (dual-version — ray2551 kept for rollback), and commit the
generated ray_2.56.0_img_py311/py312 base locks. Fix the soruce_depset typo.

ray_llm stays ray2551-only: Ray's 2.56.0 LLM deplock isn't published upstream
yet (fetch 404s), so rayllm_2.56.0 + the LLM templates are a follow-up. Per-
template expand entries stay on 2551 — each template's bump PR repoints its own
entry (base-first rollout).

Claude-Session: https://claude.ai/code/session_01HEiVRurDkXnrLAyCduiLdH
Signed-off-by: Aydin Abiar <aydin@anyscale.com>
@Aydin-ab Aydin-ab force-pushed the deps/ray-2.56.0-recompile branch from 1c2c64d to 0b82663 Compare July 2, 2026 17:25
@Aydin-ab Aydin-ab changed the title build(deps): add Ray 2.56.0 base depset locks (base-only) build(deps): Ray 2.56.0 image base locks (base-only) Jul 2, 2026
elliot-barn and others added 5 commits July 2, 2026 19:02
Signed-off-by: elliot-barn <elliot.barnwell@anyscale.com>
The full-tree update_deps.sh run in f7d85fd recompiled the 2.55.1 image
locks from a clobbered base lock (the 2.56.0 base lock overwrote the
2.55.1 one in the shared /tmp/ray-deps scratch dir, since the fetched
filename was keyed only on Python minor, not Ray version). That floated
fastapi 0.121.0->0.133.0, pandas 1.5.3->2.3.3, and pulled in mmh3.

Restore both ray_2.55.1_img_py{311,312}.lock to match main. The scratch
filename collision itself is fixed separately by namespacing the fetched
base/LLM/constraints files by Ray version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ratch collisions

update_deps.sh fetched each Ray base input into /tmp/ray-deps/ under a
filename keyed only on Python minor (+CUDA), not Ray version. When a
single run compiled multiple Ray versions sharing a Python minor (e.g.
ray2551_py311 + ray2560_py311), their pre_hooks clobbered each other's
scratch file, so one version's base lock fed the other's compile (see
prior 2.55.1 drift revert).

Namespace the local dest by ${RAY_VERSION} while keeping the remote
upstream filename version-agnostic (that's what the ray-<ver> tag
serves): split REMOTE_FILE vs LOCK_FILE/DEST_FILE in the lock/constraints
fetchers and update the matching requirements: paths in
template.depsets.yaml.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Guarantees a hermetic scratch dir between runs so stale fetched base
locks can't linger. Belt-and-suspenders on top of the per-version
filename namespacing: pre_hooks re-fetch everything they need, and a
clean dir makes a genuinely-missing upstream file fail loudly instead of
silently reusing a stale copy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: elliot-barn <elliot.barnwell@anyscale.com>
@Aydin-ab Aydin-ab marked this pull request as ready for review July 2, 2026 22:53
@Aydin-ab Aydin-ab merged commit 9186783 into main Jul 2, 2026
4 checks passed
@Aydin-ab Aydin-ab deleted the deps/ray-2.56.0-recompile branch July 2, 2026 22:57
Aydin-ab added a commit that referenced this pull request Jul 2, 2026
…831)

The `/template` Ray-bump automation had no per-template depset recipe,
so the Ray 2.56.0 batch behaved inconsistently. This teaches the skill
(and the cursor preflight) how depsets interact with a bump. **Docs +
preflight only — no CI or lockfile changes** (those are #834 / #835 /
#833).

## Why
- **No per-template depset recipe** — `bump-ray-version.md` only pointed
at the whole-repo *batch* `upgrade-dependencies.md`; nothing covered
no-lock templates or how to read the repo-global `check-depsets` gate.
- **#819 was a workflow drop** — the cleanest 2.56.0 PR stuck because
the agent opened a draft and never dispatched `/test-template`.
- **`.cursor` was never the block** — `raydepsets` bundles `uv` and
recompiled fine in the cursor env; but preflight never smoke-tested the
toolchain, so a real breakage would only surface mid-bump.

## Changes
- `bump-ray-version.md` — per-template depset recipe (no-lock vs
has-lock), batch-vs-per-template preamble,
`check-depsets`-is-repo-global note, explicit **Done criteria**.
- `upgrade-dependencies.md` / `dependencies.md` — label the human/batch
path; document the gate's collateral behavior.
- `.cursor/preflight.sh` — depset-toolchain smoke test (fail at
preflight, not mid-bump).

## Testing
`pre-commit` on changed files passed. Docs/preflight only — no runtime
impact; validated end-to-end by retriggering `template-updater` against
the fixed skill.

---------

Signed-off-by: Aydin Abiar <aydin@anyscale.com>
Aydin-ab added a commit that referenced this pull request Jul 8, 2026
…875)

## Summary
Bump `ray-tune-train-integration` to Ray 2.56.0.

## Changes
- `BUILD.yaml`: `cluster_env.image_uri` →
`anyscale/ray:2.56.0-py312-cu129`.
- `dependencies/template.depsets.yaml`: repoint the templates `expand`
entry from `ray2551_py312_cu128` → `ray2560_py312_cu128`. The
`ray2560_py312_cu128` bundle and base `ray_2.56.0_img_py312.lock`
already landed via #833, so only the expand pointer flipped (Depset-bump
SHORTCUT).
- `templates/ray-tune-train-integration/python_depset.lock`: recompiled
via `./update_deps.sh --name
ray_tune_train_integration_depset_2.56.0_3.12`; byte-identical to the
previous lock (requirements don`t pull Ray transitively;
`--unsafe-package ray` in append_flags).

## Tests / validation
- **Local:** `pre-commit run --all-files` — passed.
- **CI:** all GH-Actions checks green (`pre-commit`, `build`,
`validate-build-yaml`, `check-depsets`). Buildkite `template-test` build
#478 passed (~15m58s) —
https://buildkite.com/anyscale/template-test/builds/478.

## Publish
Automation tokens `BUILDKITE_API_TOKEN` lacks the `write_builds` scope,
so this run cannot trigger the `tmpl-publish` build itself. After merge,
a reviewer must trigger it manually per
`.claude/skills/template/references/publish-to-backend.md`:
- Pipeline: https://buildkite.com/anyscale/tmpl-publish
- `input-tmpl-name` fields: `tmpl-name=ray-tune-train-integration`,
`tmpl-branch=main`, `tmpl-commit=HEAD`.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Aydin Abiar <Aydin-ab@users.noreply.github.com>
Aydin-ab added a commit that referenced this pull request Jul 8, 2026
…887)

## Summary
Bump llm_batch_inference_vision to Ray 2.56.0.

## Changes
- `BUILD.yaml`: `cluster_env.image_uri` →
`anyscale/ray-llm:2.56.0-py312-cu130` (was `2.55.1-py311-cu128`). Ray
2.56.0 `anyscale/ray-llm` only ships `py312-cu130`, so this also moves
the Python/CUDA pair (tag verified on Docker Hub).
- `templates/llm_batch_inference_vision/job.yaml`: `image_uri` →
`anyscale/ray-llm:2.56.0-py312-cu130`.
- `templates/llm_batch_inference_vision/README.md` + `README.ipynb`:
in-doc `image_uri` example → `anyscale/ray-llm:2.56.0-py312-cu130`.
- `dependencies/template.depsets.yaml`: repoint this template's `expand`
entry `build_arg_sets` `ray2551_py311_cu128` → `ray2560_py312_cu130`;
PyTorch `--index` → `cu130`. The `ray2560_py312_cu130` bundle +
`rayllm_2.56.0_py312_cu130.lock` base already existed from #833's
follow-up, so only this expand pointer + index flipped.
- `templates/llm_batch_inference_vision/requirements.txt`: refresh the
comment to reference `anyscale/ray-llm:2.56.0` and pin
`huggingface-hub==1.13.0` to match the new base image (was `0.36.2`).
`numpy==1.26.4`, `pandas==2.3.3`, `pyarrow==19.0.1`, and
`datasets==3.6.0` kept unchanged — the 2.56.0 ray-llm image still ships
numpy 1.x + pyarrow 19 + scipy compiled against numpy 1.x (verified from
the CI package diff), so keeping the numpy-1 stack is what actually lets
the layered lock reinstall as a no-op.
- `templates/llm_batch_inference_vision/batch_inference_vision.py` +
`batch_inference_vision_scaled.py` + `README.ipynb`/`README.md`: migrate
`ray.data.llm.build_llm_processor` → `build_processor`. Ray 2.56.0
removed the deprecated `build_llm_processor` alias in
ray-project/ray#63569.
- Regenerated `templates/llm_batch_inference_vision/python_depset.lock`
via `./update_deps.sh --name
llm_batch_inference_vision_depset_2.56.0_3.12_cu130`.

## Fix iterations
Two failure→fix cycles (both agent-fixable, not infra):
1. **Build #490** — `ImportError: A module that was compiled using NumPy
1.x cannot be run in NumPy 2.2.6` from `scipy.io._sparsetools` on first
`import datasets`. The Ray 2.56.0 rayllm deplock declares
`numpy==2.2.6`, but the actual `anyscale/ray-llm:2.56.0-py312-cu130`
image still ships numpy 1.26.4 + pyarrow 19.0.1 (with scipy compiled
against numpy 1.x). Fix: pin the layered lock to the runtime versions
(`numpy==1.26.4`, `pyarrow==19.0.1`), matching the classic "un-pinned
floats" gotcha in `references/dependencies.md`.
2. **Build #494** — `ImportError: cannot import name
'build_llm_processor' from 'ray.data.llm'`. Ray 2.56.0 removed the
deprecated alias (ray-project/ray#63569). Fix: rename to
`build_processor` in the two `.py` files and in the notebook +
regenerated README.

## Tests / validation
- **Local:** `pre-commit run --all-files` — passed.
- **CI:** Buildkite [`template-test` build
#497](https://buildkite.com/anyscale/template-test/builds/497) — passed
(~12m 40s).

## Publish
`BUILDKITE_API_TOKEN` provided to this Cloud Agent lacks the
`write_builds` scope, so this run cannot programmatically `create_build`
on `tmpl-publish` (see
`.claude/skills/template/references/publish-to-backend.md`). After
merge, a reviewer should trigger a fresh `tmpl-publish` build
(`org_slug=anyscale`, `pipeline_slug=tmpl-publish`, `branch=master`,
`message=llm_batch_inference_vision`) and drive the manual gates dev →
staging → production per that reference. Pipeline:
https://buildkite.com/anyscale/tmpl-publish.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Aydin Abiar <Aydin-ab@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants